// ** ---------- 解析token 中间件 限制接口权限 ---------- **
//  1、导入全局配置文件
const configKey = require('../config/index')
// 2、jwt 中间件 解析token
const { expressjwt: jwt } = require('express-jwt')
// 3、使用.unless({path: [/^\/api\//]})指定哪些接口不需要进行Token的身份认证,即 /api开头的接口不需要token
// 设置保护路由的正则 /api/ ; 如: const pattern = /^\/api\//
/**
 * express-jwt 保护路由的方式有两种
 * 直接保护某路由 - app.use("/api", jwt({ secret: "shhhhhhared-secret", algorithms: ["HS256"] }));
 * 保护某路由之外的其他路由 - app.use(
  jwt({
    secret: "shhhhhhared-secret",
    algorithms: ["HS256"],
  }).unless({ path: ["/token"] })
);
其中 unless 后面可以跟 路径字符串和正则表达式
如果只是想要保护指定的几个路径，则 .unless({path: ['/login','/register']})
 */

// 4、导入白名单 
const {whiteList} = require('../config/whiteList')

// 5、设置 express-jwt 中间件
const jwtMiddleware = jwt({
  secret: configKey.jwtSecretKey,
  algorithms: ['HS256']
}).unless({
  path: whiteList // 直接指定
})

// 6、对外暴露
module.exports = jwtMiddleware

// ** ----------  解析token 中间件 限制接口权限 End ---------- **